#ifndef LOG_H
#define LOG_H
#include <memory>
#pragma warning(push, 0)
#include <spdlog/spdlog.h>
#include <spdlog/fmt/ostr.h>
#pragma warning(pop)

namespace HS {
	class Log
	{
	public:
		static void Init();
		static std::shared_ptr<spdlog::logger>& GetLogger() { return s_Logger; }
	private:
		static std::shared_ptr<spdlog::logger> s_Logger;
	};
}

//log
#define LOGTRACE(...)         HS::Log::GetLogger()->trace(__VA_ARGS__)
#define LOGINFO(...)          HS::Log::GetLogger()->info(__VA_ARGS__)
#define LOGWARN(...)          HS::Log::GetLogger()->warn(__VA_ARGS__)
#define LOGERROR(...)         HS::Log::GetLogger()->error(__VA_ARGS__)
#define LOGCRITICAL(...)      HS::Log::GetLogger()->critical(__VA_ARGS__)
#endif // !LOG_H
